The foundational design of a computational system is defined by the relationship between the Processing Unit and Memory. The primary distinction lies in whether instructions and data share a common pathway or utilize independent channels.
1. von Neumann Architecture
Utilized by general-purpose systems like x86-64, this model features a unified memory space. The CPU accesses both code and data via a single bus, leading to the von Neumann Bottleneck: the latency incurred when the CPU must multiplex the bus between fetching instructions and accessing operands.
2. Harvard Architecture
Common in specialized processors and ARMv8-A L1 cache implementations, this design uses physically separate memory storage and signal pathways. This allows for simultaneous fetching of an opcode and a data operand, significantly increasing throughput.
Flowchart: Memory Fetch Cycle in a von Neumann architecture showing sequential bus utilization.
3. Structural Convergence
Modern HPC systems often use a Modified Harvard Architecture. They behave like Harvard machines at the L1 cache level (split I-cache and D-cache) to maximize speed while maintaining a von Neumann model at main RAM for programming flexibility.